package guoanmaker.provider.business.service;

import java.util.Date;
import java.util.Map;

import javax.annotation.Resource;
import javax.transaction.Transactional;

import org.springframework.stereotype.Service;

import guoanmaker.provider.business.dao.DemandDockingDao;
import guoanmaker.provider.business.model.ProvideCommodity;
import guoanmaker.provider.business.model.ProvideDemandDocking;
import guoanmaker.provider.business.model.ReturnResult;
import guoanmaker.provider.business.modelnobind.DemandDocking;
import guoanmaker.provider.business.repository.PersonalUserRepository;
import guoanmaker.provider.business.repository.ProvideCommodityRepository;
import guoanmaker.provider.business.repository.ProvideDemandDockingRepository;
/**
 * 
* @ClassName: ProvideDemandDockingService 
* @Description: 需求对接service
* @author Yvonne_MGL
* @date 2017年12月16日 下午3:30:30 
*  
 */
@Service
public class ProvideDemandDockingService {
	
	@Resource
	private ProvideDemandDockingRepository provideDemandDockingRepository;
	
	@Resource
	private ProvideCommodityRepository provideCommodityRepository;
	
	@Resource
	private PersonalUserRepository personalUserRepository;
	
	@Resource
	private DemandDockingDao demandDockingDao;
	
	/**
	 * 
	* @Description: 创建需求对接订单 
	* @param commodityid 商品id
	* @param userid 用户id
	* @param contactPerson 联系人
	* @param contactNumber 联系电话
	* @param projectIntroduction 项目简介
	* @param enterpriseName 企业名称
	* @param position 职位
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年12月18日 上午10:14:54     
	* @return ReturnResult    
	* @throws 
	 */
	@Transactional
	public ReturnResult createDemandDocking(String userid,String commodityid,String enterpriseName,String position,String contactPerson,String contactNumber,String projectIntroduction){
		ReturnResult returnResult=new ReturnResult();
		ProvideDemandDocking demandDocking=new ProvideDemandDocking();
		ProvideCommodity provideCommodity=provideCommodityRepository.findOne(commodityid);
		if(provideCommodity!=null&&provideCommodity.getStock()!=null&&provideCommodity.getStock()>0&&provideCommodity.getCommodityState()==2){
			provideCommodity.setStock(provideCommodity.getStock()-1);
			if(provideCommodity.getSalesVolume()==null){
				provideCommodity.setSalesVolume(1);
			}else{
				provideCommodity.setSalesVolume(provideCommodity.getSalesVolume()+1);
			}if(provideCommodity.getStock()==0){
				provideCommodity.setCommodityState(4);
			}
			provideCommodityRepository.save(provideCommodity);
			demandDocking.setCommodity(provideCommodity);
			demandDocking.setUser(personalUserRepository.findOne(userid));
			demandDocking.setEnterpriseName(enterpriseName);
			demandDocking.setPosition(position);
			demandDocking.setContactPerson(contactPerson);
			demandDocking.setContactNumber(contactNumber);
			demandDocking.setProjectIntroduction(projectIntroduction);
			demandDocking.setCreateTime(new Date());
			demandDocking.setStates("1");
			demandDocking.setSortName(provideCommodity.getServiceType().getServerName());
			demandDocking.setOrderNumber(demandDockingDao.getOrderNumber());
			provideDemandDockingRepository.save(demandDocking);
			returnResult.setKey("success");
			returnResult.setValue(demandDocking.getId());
			
		}else{
			if(provideCommodity==null){
				returnResult.setKey("error");
				returnResult.setValue("商品不存在");
			}else if(provideCommodity.getStock()==null||provideCommodity.getStock()<=0){
				returnResult.setKey("error");
				returnResult.setValue("商品库存不足");
			}else if(provideCommodity.getCommodityState()==4){
				returnResult.setKey("error");
				returnResult.setValue("商品已下架");
			}else if(provideCommodity.getCommodityState()==5){
				returnResult.setKey("error");
				returnResult.setValue("商品已被冻结");
			}else if(provideCommodity.getCommodityState()==6){
				returnResult.setKey("error");
				returnResult.setValue("商品已被删除");
			}else{
				returnResult.setKey("error");
				returnResult.setValue("商品当前状态不允许下单");
			}
			
		}
		return returnResult;
	}
	
	/**
	 * 
	* @Description: 修改需求对接订单 
	* @param id 对接id
	* @param contactPerson 联系人
	* @param contactNumber 联系电话
	* @param projectIntroduction 项目简介
	* @param enterpriseName 企业名称
	* @param position 职位
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年12月18日 上午10:14:54     
	* @return ReturnResult    
	* @throws 
	 */
	@Transactional
	public ReturnResult updateDemandDocking(String id,String enterpriseName,String position,String contactPerson,String contactNumber,String projectIntroduction){
		ReturnResult returnResult=new ReturnResult();
		ProvideDemandDocking demandDocking=provideDemandDockingRepository.findOne(id);
		if(demandDocking==null){
			returnResult.setKey("error");
			returnResult.setValue("需求对接不存在");
		}else if(!demandDocking.getStates().equals("1")){
			returnResult.setKey("error");
			returnResult.setValue("需求对接当前状态不允许此操作");
		}else{
			if(enterpriseName!=null&&!enterpriseName.equals("")){
				demandDocking.setEnterpriseName(enterpriseName);
			}
			if(position!=null&&!position.equals("")){
				demandDocking.setPosition(position);
			}
			if(contactPerson!=null&&!contactPerson.equals("")){
				demandDocking.setContactPerson(contactPerson);
			}
			if(contactNumber!=null&&!contactNumber.equals("")){
				demandDocking.setContactNumber(contactNumber);
			}
			if(projectIntroduction!=null&&!projectIntroduction.equals("")){
				demandDocking.setProjectIntroduction(projectIntroduction);
			}
			demandDocking.setUpdateTime(new Date());
			provideDemandDockingRepository.save(demandDocking);
			returnResult.setKey("success");
			returnResult.setValue("修改成功");
		}
		
		return returnResult;
	}
	
	/**
	 * 
	* @Description: 确认需求对接订单 
	* @param id 对接id
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年12月18日 上午10:14:54     
	* @return ReturnResult    
	* @throws 
	 */
	@Transactional
	public ReturnResult confirmDemandDocking(String id){
		ReturnResult returnResult=new ReturnResult();
		ProvideDemandDocking demandDocking=provideDemandDockingRepository.findOne(id);
		if(demandDocking==null){
			returnResult.setKey("error");
			returnResult.setValue("需求对接不存在");
		}else if(!demandDocking.getStates().equals("1")){
			returnResult.setKey("error");
			returnResult.setValue("需求对接当前状态不允许此操作");
		}else{
			demandDocking.setStates("2");
			demandDocking.setConfirmTime(new Date());
			provideDemandDockingRepository.save(demandDocking);
		}
		return returnResult;
	}
	
	/**
	 * 
	* @Description: 根据条件查询需求 
	* @param beginTime 起始时间
	* @param endTime 结束时间
	* @param likeStr 关键字：模糊查询  联系人，联系方式，企业名称，订单编号
	* @param state 1为未确认    2为已确认
	* @param pageNumber 页数
	* @param pageSize 每页条数
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年12月18日 上午10:57:59     
	* @return Map    
	* @throws 
	 */
	public Map findByProperties(String beginTime,String endTime,String likeStr,String state,String businessid, Integer pageNumber, Integer pageSize,String userid){
		return demandDockingDao.findByProperties(beginTime, endTime, likeStr, state, businessid, pageNumber, pageSize, userid);
	}
	
	/**
	 * 
	* @Description: 根据id查询需求对接 
	* @param id
	* @param @return
	* @author Yvonne_MGL 
	* @date 2017年12月18日 上午11:13:00     
	* @return DemandDocking    
	* @throws 
	 */
	public DemandDocking findDemandDockingByid(String id){
		return demandDockingDao.findDemandDockingByid(id);
	}
	
	/**
	 * 
	* @Description: 根据用户id和商品id查询需求对接详情
	* @param @param userid
	* @param @param commodityid
	* @param @return
	* @author Yvonne_MGL 
	* @date 2018年1月10日 上午11:13:53     
	* @return DemandDocking    
	* @throws 
	 */
	public DemandDocking findDemandDockingByCommid(String userid,String commodityid){
		return demandDockingDao.findDemandDockingByCommid(userid, commodityid);
	}

}
